package co.edu.usbcali.dataaccess.daoFactory;

import co.edu.usbcali.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class JPADaoFactory {
    private static JPADaoFactory instance = null;

    private JPADaoFactory() {
    }

    /**
    *
    * @return JPADaoFactory
    */
    public static JPADaoFactory getInstance() {
        if (instance == null) {
            instance = new JPADaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IActaEvaluacionDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IActaEvaluacionDAO implementation
    */
    public IActaEvaluacionDAO getActaEvaluacionDAO() {
        return new ActaEvaluacionDAO();
    }

    /**
    * This method instantiates the IActaInicioDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IActaInicioDAO implementation
    */
    public IActaInicioDAO getActaInicioDAO() {
        return new ActaInicioDAO();
    }

    /**
    * This method instantiates the IActaSeguimientoDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IActaSeguimientoDAO implementation
    */
    public IActaSeguimientoDAO getActaSeguimientoDAO() {
        return new ActaSeguimientoDAO();
    }

    /**
    * This method instantiates the IActaSupervisionDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IActaSupervisionDAO implementation
    */
    public IActaSupervisionDAO getActaSupervisionDAO() {
        return new ActaSupervisionDAO();
    }

    /**
    * This method instantiates the IAdministradorDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IAdministradorDAO implementation
    */
    public IAdministradorDAO getAdministradorDAO() {
        return new AdministradorDAO();
    }

    /**
    * This method instantiates the IArchivoDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IArchivoDAO implementation
    */
    public IArchivoDAO getArchivoDAO() {
        return new ArchivoDAO();
    }

    /**
    * This method instantiates the IAreaDesempenoDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IAreaDesempenoDAO implementation
    */
    public IAreaDesempenoDAO getAreaDesempenoDAO() {
        return new AreaDesempenoDAO();
    }

    /**
    * This method instantiates the ICuentaDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return ICuentaDAO implementation
    */
    public ICuentaDAO getCuentaDAO() {
        return new CuentaDAO();
    }

    /**
    * This method instantiates the IDocenteDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IDocenteDAO implementation
    */
    public IDocenteDAO getDocenteDAO() {
        return new DocenteDAO();
    }

    /**
    * This method instantiates the IEmpresaDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IEmpresaDAO implementation
    */
    public IEmpresaDAO getEmpresaDAO() {
        return new EmpresaDAO();
    }

    /**
    * This method instantiates the IInscripcionDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IInscripcionDAO implementation
    */
    public IInscripcionDAO getInscripcionDAO() {
        return new InscripcionDAO();
    }

    /**
    * This method instantiates the IPracticanteDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IPracticanteDAO implementation
    */
    public IPracticanteDAO getPracticanteDAO() {
        return new PracticanteDAO();
    }

    /**
    * This method instantiates the IPreinscripcionDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IPreinscripcionDAO implementation
    */
    public IPreinscripcionDAO getPreinscripcionDAO() {
        return new PreinscripcionDAO();
    }

    /**
    * This method instantiates the IProgramaAcademicoDAO class for JPA
    * that is used in this applications deployment environment to access the data.
    * @return IProgramaAcademicoDAO implementation
    */
    public IProgramaAcademicoDAO getProgramaAcademicoDAO() {
        return new ProgramaAcademicoDAO();
    }
}
